<?php
/**
 * Обработка корзины
 *
 * @author Sayp
 */
class Cart extends ActiveRecord {
	protected $tableName = 'cart';
	protected $pkName = 'ID_cart';
	
	protected $arrSettings = array('created_at' => true);
	
	/**
	 * Метод формирует содержимое корзины
	 * 
	 * @return string
	 */
	public static function getCartContentShort() {
		$arrCondition = self::getArrCondition();
		if (empty($arrCondition)) return 'Корзина пуста';
		
		$objDB = Service_Database::instanse();
		$stmt = "
			SELECT SUM(`product`.`client_price` * `cart`.`amount`) as `full_price`, SUM(`cart`.`amount`) as `nr_product`
			FROM `cart`
			INNER JOIN `product` USING(`ID_product`)
			WHERE " . $arrCondition['field'] . " = '" . $arrCondition['value'] . "' AND `cart`.`is_order` = 0";

		$arrResult = $objDB->selectOneRow($stmt);	// Запрос всегда возвращает что-то
		if (empty($arrResult['full_price'])) return 'Корзина пуста';
		
		return $arrResult['nr_product'] . ' ' . Service_Function::getDeclination($arrResult['nr_product'], 'товар', 'товара', 'товаров') . ' на ' . $arrResult['full_price'] . ' руб.';
	}
	
	/**
	 * Получаем пискама товаров текущего пользователя
	 * 
	 * @return array - массив с товарами
	 */
	public static function getProducts() {
		$arrCondition = self::getArrCondition();
		if (empty($arrCondition)) return $arrCondition;
		
		$objDB = Service_Database::instanse();
		$stmt = "
			SELECT `cart`.`ID_product`, `cart`.`ID_size`, `cart`.`amount`,`product`.`product_name`, `product`.`client_price`, `size`.`size_name`
			FROM `cart`
			INNER JOIN `product` USING(`ID_product`)
			INNER JOIN `size` USING(`ID_size`)
			WHERE " . $arrCondition['field'] . " = '" . $arrCondition['value'] . "' AND `cart`.`is_order` = 0
		";
		
		return $objDB->select($stmt);
	}
	
	/**
	 * Формируем условие для выборки из корзины
	 * В поле field хранится название поля, в поле value - значение
	 * 
	 * @return array $arrCondition
	 */
	public static function getArrCondition() {
		$userId = User_Seance::getId();
		if ($userId) $arrCondition = array('field' => '`cart`.`ID_user`', 'value' => $userId);
		elseif (isset($_COOKIE['cart_hash']) && $_COOKIE['cart_hash']) $arrCondition = array('field' => '`cart`.`cart_hash`', 'value' => Service_Escape::absolutelyEscapeString($_COOKIE['cart_hash']));
		else return array();
		
		return $arrCondition;
	}
}